package com.simplecode.arcgistools.utils.coordinate.enums;

/**
 * @author liuxy
 * @version 1.0
 * @Project: ArcGis-Tools
 * @DateTime: 2023/5/30 10:55
 * @Description: EPSG 编码枚举
 * @since JDK 1.8
 */
public enum EpsgConverterEnum {

    /**
     * 北京54 坐标系 转 西安80 坐标系
     */
    BEIJING54_TO_XIAN80_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * 北京54 坐标系 转 WGS84 坐标系
     */
    BEIJING54_TO_WGS84_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),
    /**
     * 北京54 坐标系 转 国家CGCS2000 坐标系
     */
    BEIJING54_TO_CGCS2000_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),
    /**
     * 北京54 坐标系 转 GCJ-02 火星坐标系
     */
    BEIJING54_TO_GCJ02_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * 北京54 坐标系 转 BD09 百度坐标系
     */
    BEIJING54_TO_BD09_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE),
    /**
     * 北京54 坐标系 转 WebMercator 投影坐标系
     */
    BEIJING54_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.BEIJING54_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * 西安80 坐标系 转 北京54 坐标系
     */
    XIAN80_TO_BEIJING54_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * 西安80 坐标系 转 WGS84 坐标系
     */
    XIAN80_TO_WGS84_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),

    /**
     * 西安80 坐标系 转 国家CGCS2000 坐标系
     */
    XIAN80_TO_CGCS2000_COORDINATE_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),

    /**
     * 西安80 坐标系 转 GCJ-02 火星坐标系
     */
    XIAN80_TO_GCJ02_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * 西安80 坐标系 转 BD09 百度坐标系
     */
    XIAN80_TO_BD09_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE),
    /**
     * 西安80 坐标系 转 WebMercator 投影坐标系
     */
    XIAN80_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.XIAN80_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * WGS84 坐标系 转 北京54 坐标系
     */
    WGS84_TO_BEIJING54_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * WGS84 坐标系 转 西安80 坐标系
     */
    WGS84_TO_XIAN80_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * WGS84 坐标系 转 国家CGCS2000 坐标系
     */
    WGS84_TO_CGCS2000_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),
    /**
     * WGS84 坐标系 转 GCJ-02 火星坐标系
     */
    WGS84_TO_GCJ02_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * WGS84 坐标系 转 BD09 百度坐标系
     */
    WGS84_TO_BD09_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE),
    /**
     * WGS84 坐标系 转 WebMercator 投影坐标系
     */
    WGS84_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.WGS84_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * 国家CGCS2000 坐标系 转 北京54 坐标系
     */
    CGCS2000_TO_BEIJING54_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * 国家CGCS2000 坐标系 转 西安80 坐标系
     */
    CGCS2000_TO_XIAN80_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * 国家CGCS2000 坐标系 转 WGS84 坐标系
     */
    CGCS2000_TO_WGS84_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),
    /**
     * 国家CGCS2000 坐标系 转 GCJ-02 火星坐标系
     */
    CGCS2000_TO_GCJ02_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * 国家CGCS2000 坐标系 转 BD09 百度坐标系
     */
    CGCS2000_TO_BD09_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE),
    /**
     * 国家CGCS2000 坐标系 转 WebMercator 投影坐标系
     */
    CGCS2000_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.CGCS2000_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * GCJ-02 火星坐标系 转 北京54 坐标系
     */
    GCJ02_TO_BEIJING54_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * GCJ-02 火星坐标系 转 西安80 坐标系
     */
    GCJ02_TO_XIAN80_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * GCJ-02 火星坐标系 转 WGS84 坐标系
     */
    GCJ02_TO_WGS84_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),
    /**
     * GCJ-02 火星坐标系 转 国家CGCS2000 坐标系
     */
    GCJ02_TO_CGCS2000_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),
    /**
     * GCJ-02 火星坐标系 转 BD09 百度坐标系
     */
    GCJ02_TO_BD09_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE),
    /**
     * GCJ-02 火星坐标系 转 WebMercator 投影坐标系
     */
    GCJ02_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.GCJ02_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * BD09百度坐标系 转 北京54 坐标系
     */
    BD09_TO_BEIJING54_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * BD09百度坐标系 转 西安80 坐标系
     */
    BD09_TO_XIAN80_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * BD09百度坐标系 转 WGS84 坐标系
     */
    BD09_TO_WGS84_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),
    /**
     * BD09百度坐标系 转 国家CGCS2000 坐标系
     */
    BD09_TO_CGCS2000_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),
    /**
     * BD09百度坐标系 转 GCJ-02 火星坐标系
     */
    BD09_TO_GCJ02_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * BD09百度坐标系 转 WebMercator 投影坐标系
     */
    BD09_TO_WEB_MERCATOR_COORDINATE(EpsgEnum.BD09_EPSG_CODE, EpsgEnum.WEB_MERCATOR_EPSG_CODE),


    /**
     * WebMercator 投影坐标系 转 北京54 坐标系
     */
    WEB_MERCATOR_TO_BEIJING54_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.BEIJING54_EPSG_CODE),
    /**
     * WebMercator 投影坐标系 转 西安80 坐标系
     */
    WEB_MERCATOR_TO_XIAN80_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.XIAN80_EPSG_CODE),
    /**
     * WebMercator 投影坐标系 转 WGS84 坐标系
     */
    WEB_MERCATOR_TO_WGS84_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.WGS84_EPSG_CODE),
    /**
     * WebMercator 投影坐标系 转 CGCS2000 坐标系
     */
    WEB_MERCATOR_TO_CGCS2000_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.CGCS2000_EPSG_CODE),
    /**
     * WebMercator 投影坐标系 转 GCJ-02 火星坐标系
     */
    WEB_MERCATOR_TO_GCJ02_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.GCJ02_EPSG_CODE),
    /**
     * WebMercator 投影坐标系 转 BD09 百度坐标系
     */
    WEB_MERCATOR_TO_BD09_COORDINATE(EpsgEnum.WEB_MERCATOR_EPSG_CODE, EpsgEnum.BD09_EPSG_CODE);


    /**
     * 转换前的 EPSG 对应枚举
     */
    private EpsgEnum sourceEpsgEnum;

    /**
     * 转换后的 EPSG 对应枚举
     */
    private EpsgEnum targetEpsgEnum;

    /**
     * EPSG 枚举初始化
     *
     * @param sourceEpsgEnum 转换前的 EPSG 对应编码
     * @param targetEpsgEnum 转换后的 EPSG 对应坐标系
     */
    EpsgConverterEnum(EpsgEnum sourceEpsgEnum, EpsgEnum targetEpsgEnum) {
        this.sourceEpsgEnum = sourceEpsgEnum;
        this.targetEpsgEnum = targetEpsgEnum;
    }

    public EpsgEnum getSourceEpsgEnum() {
        return sourceEpsgEnum;
    }


    public EpsgEnum getTargetEpsgEnum() {
        return targetEpsgEnum;
    }
}
